package main

// 198. 打家劫舍
func main() {
	nums := []int{1, 2, 3, 1}
	i := rob(nums)
	println(i)
}

func rob(nums []int) int {
	// 记录偷盗到每个房屋的大小
	if len(nums) == 0 {
		return 0
	} else if len(nums) == 1 {
		return nums[0]
	}

	numLen := len(nums)
	resArr := make([]int, numLen)
	resArr[0] = nums[0]
	resArr[1] = maxInt2(resArr[0], nums[1])

	for i := 2; i < numLen; i++ {
		resArr[i] = maxInt2(resArr[i-1], resArr[i-2]+nums[i])
	}

	return resArr[numLen-1]
}

func maxInt2(int1, int2 int) int {
	if int1 > int2 {
		return int1
	}
	return int2
}

/**
你是一个专业的小偷，计划偷窃沿街的房屋。每间房内都藏有一定的现金，影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统，如果两间相邻的房屋在同一晚上被小偷闯入，系统会自动报警。

给定一个代表每个房屋存放金额的非负整数数组，计算你 不触动警报装置的情况下 ，一夜之内能够偷窃到的最高金额。

示例 1：

输入：[1,2,3,1]
输出：4
解释：偷窃 1 号房屋 (金额 = 1) ，然后偷窃 3 号房屋 (金额 = 3)。
     偷窃到的最高金额 = 1 + 3 = 4 。
示例 2：

输入：[2,7,9,3,1]
输出：12
解释：偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9)，接着偷窃 5 号房屋 (金额 = 1)。
     偷窃到的最高金额 = 2 + 9 + 1 = 12 。

提示：

1 <= nums.length <= 100
0 <= nums[i] <= 400
*/
